"""百度翻译 API 工具脚本"""
# 兼容从脚本路径直接运行，确保能找到项目根目录下的 config 包
try:
    from config.config import get_config_baidu_fanyi_app_id, get_config_baidu_fanyi_app_key
except ImportError:
    import sys, os
    sys.path.append(os.path.dirname(os.path.dirname(__file__)))
    from config.config import get_config_baidu_fanyi_app_id, get_config_baidu_fanyi_app_key

import requests
import hashlib
import random
import time

APP_ID = get_config_baidu_fanyi_app_id()
APP_KEY = get_config_baidu_fanyi_app_key()
# 部分示例使用 SECRET_KEY 命名，此处别名保证兼容
SECRET_KEY = APP_KEY

def baidu_translate(text, from_lang="zh", to_lang="en"):
    """
    使用百度翻译API翻译文本（中文→英文）
    :param text: 待翻译的中文文本
    :param from_lang: 源语言（默认zh=中文）
    :param to_lang: 目标语言（默认en=英文）
    :return: 翻译后的英文文本
    """
    # 1. 生成随机盐值（salt）
    salt = random.randint(32768, 65536)
    
    # 2. 构造待签名字符串（注意：必须按顺序拼接）
    sign_str = APP_ID + text + str(salt) + SECRET_KEY
    # 3. 计算MD5签名
    sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest()
    
    # 4. 准备API请求参数
    params = {
        "q": text,          # 待翻译文本
        "from": from_lang,  # 源语言
        "to": to_lang,      # 目标语言
        "appid": APP_ID,    # API Key
        "salt": salt,       # 随机盐值
        "sign": sign        # 签名
    }
    
    # 5. 发送HTTP POST请求
    url = "http://api.fanyi.baidu.com/api/trans/vip/translate"
    response = requests.post(url, data=params)
    
    # 6. 解析响应（JSON格式）
    if response.status_code == 200:
        result = response.json()
        # 百度返回错误为 error_code / error_msg
        if "error_code" in result:
            raise Exception(f"翻译失败: {result.get('error_msg','未知错误')} (code={result['error_code']})")
        # 提取翻译结果
        if "trans_result" in result and result["trans_result"]:
            return result["trans_result"][0]["dst"]
        raise Exception("翻译失败：响应未包含 trans_result")
    else:
        raise Exception(f"请求失败，状态码: {response.status_code}")

if __name__ == "__main__":
    chinese_text = "你好，世界！"
    try:
        english_text = baidu_translate(chinese_text)
        print(f"中文: {chinese_text}")
        print(f"英文: {english_text}")
    except Exception as e:
        print(f"错误: {str(e)}")